package com.mjf.scala.chapter02

/**
 * 数据类型
 *	-Any
 *    *AnyVal(值类型)
 *			>Byte,Short,Int,Long,Float,Double,Boolean,Char
 *			>Unit
 *				表示返回值类型为空，相当于Java中的void关键字
 *			>StringOps
 *				对字符串功能的增强
 *
 *    *AnyRef(引用类型)
 *			>所有Java语言中的类型
 *			>Scala语言中的类
 *			>集合
 *
 *			>Null
 *				表示变量声明后，没有指向任何对象，相当于Java中null关键字
 *				是所有AnyRef的子类，所有不能将null赋值给AnyValue
 *
 *    *Nothing
 *			是所有类的子类，一般用于方法的返回值，表示当前方法没有正常返回的情况
 */
object Scala06_DataType {

  def main(args: Array[String]): Unit = {
    // 整数类型
    // 正确   Byte:范围-128~127
    val n1 : Byte = 127
    val n2 : Byte = -128

    // 正确
//    val n3 : Byte = 128
//    val n4 : Byte = -129

    // 在编译的时候，会判断当前数值是否在当前类型表示范围之内，如果在，底层默认进行转换
    var a : Byte = 10 + 20  // 提示错误是由于idea对Scala的支持不好，编译不会出错
    println(a)

    // Long类型
    var b = 10L
    println(b)

    //（1）字符常量是用单引号 ' ' 括起来的单个字符。
    var c1: Char = 'a'
    println("c1=" + c1)
    //注意：这里涉及自动类型提升，其实编译器可以自定判断是否超出范围，
    //不过idea提示报错
    var c2:Char = 'a' + 1
    println(c2)

    //（2）\t ：一个制表位，实现对齐的功能
    println("姓名\t年龄")

    //（3）\n ：换行符
    println("西门\\n东窗")

    //（4）\\ ：表示\
    println("c:\\美国\\avi")

    //（5）\" ：表示"
    println("同学们都说：\"大海哥最帅\"")

  }

}
